{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Introduction to Quantitative Finance\n",
    "\n",
    "Copyright (c) 2019 Python Charmers Pty Ltd, Australia, <https://pythoncharmers.com>. All rights reserved.\n",
    "\n",
    "<img src=\"img/python_charmers_logo.png\" width=\"300\" alt=\"Python Charmers Logo\">\n",
    "\n",
    "Published under the Creative Commons Attribution-NonCommercial 4.0 International (CC BY-NC 4.0) license. See `LICENSE.md` for details.\n",
    "\n",
    "Sponsored by Tibra Global Services, <https://tibra.com>\n",
    "\n",
    "<img src=\"img/tibra_logo.png\" width=\"300\" alt=\"Tibra Logo\">\n",
    "\n",
    "\n",
    "## Module 2.6: Overfitting\n",
    "\n",
    "### 2.6.1 Problems with Overfitting\n",
    "\n",
    "We reviewed overfitting and underfitting in previous modules. In this module we will cover overfitting in more detail. Underfitting is the case when your model is too simplistic to describe the data. For instance, trying to fit seasonal data with a linear regression model and no seasonal variables.\n",
    "\n",
    "Overfitting is the opposite, when your model is *too* complicated for your data, leading to the model learning too much. This may not sound like a problem, but it leads to a situation where you have a very low error in your training data with a very **high** error in your testing data. The cause? Your model is learning the inherent noise in your dataset, that would be smoothed out or ignored in a simpler model.\n",
    "\n",
    "This also explains why simpler models are often chosen for many problems. This whole series of modules has looked at linear models, ARIMA and GARCH as the main model types. Each of these is a fairly simple relationship of inputs to outputs. While you can use them in complicated ways, the simplicity of the models allows for noise to be smoothed out, and the underlying trends and concepts to be learned.\n",
    "\n",
    "To see overfitting in data, fit a polynomial with a high degree to some linear data with noise:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "%run setup.ipy"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "# y = mx + c + e\n",
    "x = np.linspace(0, 10, 30)\n",
    "error = np.random.randn(len(x)) * 5\n",
    "y = x * 3 + 1 + error"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x155733590>]"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.plot(x, y, 'ro')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Here is what an appropriate model will find in this data:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x1557d6890>]"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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zp2MGzfOL4WLiMhpstuhe3c46yzzp4KHBIjNMI7uOGqflJQUfvvb33LttdfSpUsX5syZw7XXXgtAUVERLpeLNWvWcMEFF5zU89XW1pKcnExNTQ1JSUmnU5qIiIgESHvO36ccc1taWnjzzTfxeDwMGjSI9evX09TUxNChQ4/cJz8/n5ycHNasWXPM52loaKC2trbVRURERPzDMAwam61dwbbd4eOLL76gQ4cOOBwO7rzzTubOnUtBQQGVlZXExsbSsWPHVvdPT0+nsrLymM83c+ZMkpOTj1yys7Pb/UuIiIjIiRXuquVnf1rHb5cUWVpHu8NHXl4eGzduZN26dfzyl7/kpptuwu12n3IBkydPpqam5silrKzslJ9LREREvm/vgQYemvsFo2Z/wJpte3njozJq65ssq6fdu9rGxsbSq1cvAAYMGMDHH3/M73//e37yk5/Q2NjI/v37W41+VFVVkZGRccznczgcOByO9lcuIiIix9XY7OWva3bw++VbqKtvBmDUWV15cEQ+SXExltXV7vBxNK/XS0NDAwMGDCAmJobly5dzzTXXAFBcXExpaSmDBg067UJFRETk5BiGwXtFu5nxTiHbqs2l9PtmJjF1dAEDe3S2uLp2ho/JkyczYsQIcnJyqKurY86cOaxYsYIlS5aQnJzMbbfdxqRJk0hJSSEpKYm7776bQYMGnfRMFxERETk9W6rqmL7AzQdbqgFI7RDLb4bnce2AbKLsthM8OjDaFT52797NjTfeyK5du0hOTubss89myZIlXHnllQD87ne/w263c80117RaZExERET862tPI88u28z/W1dKi9cgNsrOLRd1567Le+G08CuWtpz2Oh++pnU+RERETl5Ti5fX137F75ZtoeaQ2UQ6rCCdh0e56NY5MWB1tOf8fdo9HyIiImKNFcW7efydQkp2HwAgP8PJ1NEFXNgr1eLKjk/hQ0REJMRs3XOAxxe4eb94DwApibFMurIP152XTXRU8C+Tr/AhIiISImoONTF7+RZe+3AHzV6DaLuNmy7szoQhvUmOD66+juNR+BAREQlyzS1e3vy4jGeWbmafpxGAK/LTeHiUi55dOlhcXfspfIiIiASxD0uqmb7ATVFlHQC90jowZXQBl/bpYnFlp07hQ0REJAjtqPbwxMJC3nVXAZAcH8O9Q3tz/QXdiAmBvo7jUfgQEREJ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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Fit a linear model\n",
    "params = np.polyfit(x, y, deg=1)\n",
    "model = np.poly1d(params)\n",
    "\n",
    "y_pred_linear = model(x)\n",
    "plt.plot(x, y, 'ro', alpha=0.5)\n",
    "plt.plot(x, y_pred_linear)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Here is a model that is overfitting:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Fit a polynomial with degree 10!\n",
    "params_10 = np.polyfit(x, y, deg=10)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x1570621d0>]"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "model_10 = np.poly1d(params_10)\n",
    "\n",
    "y_pred_overfit = model_10(x)\n",
    "plt.plot(x, y, 'ro', alpha=0.5)\n",
    "plt.plot(x, y_pred_overfit)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Note how, even though there is a clear linear trend, the line-of-\"best\"-fit wobbles through the data? The model has too much freedom, and ends up trusting the data too much.\n",
    "\n",
    "\n",
    "\n",
    "#### Exercise\n",
    "\n",
    "To see the effect of overfitting, let's create a new dataset using the same formula as before, and compute the difference in SSE (sum squared error) for both models.\n",
    "\n",
    "1. Create new data by choosing 50 points randomly from 0 to 100 (see `np.random.random`)\n",
    "2. Create new y values with random error from the same distribution we originally created `y` from (same error, same m and c values)\n",
    "3. Compute the training error. That is, the difference between `y_pred_linear` and `y`, and the difference between  `y_pred_overfit` and `y`. Which model has a lower training error?\n",
    "4. Retrain the model with a sample from the training data. Notice how the parameters change significantly as you keep sampling the data. \n",
    "\n",
    "The results you see in this exercise are also shown if you were to choose another sample from the original dataset. In other words, this model is not stable because it is overfitting."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "509.5724743093458 406.6956663794043\n",
      "12122.236070018293 6.754681022464738e+30\n"
     ]
    },
    {
     "data": {
      "image/png": "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VFVVZTxfVVUFr9ebo6rmL1mWceedd+KSSy7BeeedBwDo7++HTqdDWVlZxrlVVVXo7+/PQZXzw5NPPok//elP2LNnz0nHeM3nxl/+8hc88sgj2LRpE7761a9iz5492LhxI3Q6HdavX5++thP9vuF1n56vfOUrCIfDcDqdUKvVGBsbwwMPPIB169YBAK95FkzmGvf396OysjLjuEajQXl5+Yz+HeZ1QKHsam9vx9tvv41XXnkl16XMa36/H3fccQdeeOEF6PX6XJdTNGRZxrJly/Dggw8CAJYsWYK3334bjz76KNavX5/j6uan3/zmN3jiiSewbds2nHvuudi3bx/uvPNO1NTU8JoXgXl9i8dqtUKtVp+0emFgYADV1dU5qmp+2rBhA7Zv344XX3wRtbW16eerq6sxOjqKoaGhjPP5bzB9e/fuxbFjx9DU1ASNRgONRoNdu3Zh69at0Gg0qKqq4jWfA3a7HY2NjRnPuVwu+Hw+AEhfW/6+mT133303vvKVr+D666/H4sWLceONN+Kuu+7Cli1bAPCaZ8NkrnF1dTWOHTuWcTyVSmFwcHBG/w7zOqDodDosXboUO3bsSD8nyzJ27NiBlpaWHFY2fyiKgg0bNqCjowM7d+7EokWLMo4vXboUWq0249/gwIED8Pl8/DeYpssvvxz79+/Hvn370o9ly5Zh3bp16f/mNZ99l1xyyUlL6A8ePIgzzjgDALBo0SJUV1dnXPdwOIyuri5e92mKxWJQqTI/ptRqNWRZBsBrng2TucYtLS0YGhrC3r170+fs3LkTsiyjubl5+j982tNrC8STTz6piKKoPP7444rb7VZuvfVWpaysTOnv7891afPCbbfdplgsFuWll15S+vr60o9YLJY+50tf+pLicDiUnTt3Km+++abS0tKitLS05LDq+ef4VTyKwms+F9544w1Fo9EoDzzwgHLo0CHliSeeUAwGg/LLX/4yfc5DDz2klJWVKc8884zy1ltvKddccw2XvM7A+vXrlYULF6aXGT/99NOK1WpVvvzlL6fP4TWfuUgkonR3dyvd3d0KAOV73/ue0t3drbz//vuKokzuGl955ZXKkiVLlK6uLuWVV15Rzj77bC4znowf/ehHisPhUHQ6nXLRRRcpr7/+eq5LmjcATPh47LHH0ueMjIwo//iP/6gsWLBAMRgMSltbm9LX15e7ouehEwMKr/nc+N3vfqecd955iiiKitPpVP7t3/4t47gsy8rXv/51paqqShFFUbn88suVAwcO5KjawhcOh5U77rhDcTgcil6vV84880zla1/7mpJIJNLn8JrP3Isvvjjh7/H169crijK5axwKhZQbbrhBKS0tVcxms3LzzTcrkUhkRnUJinJcSz4iIiKiPDCv56AQERFRYWJAISIiorzDgEJERER5hwGFiIiI8g4DChEREeUdBhQiIiLKOwwoRERElHcYUIiIiCjvMKAQERFR3mFAISIiorzDgEJERER5hwGFiIiI8s7/B2VPKPKXJJ7xAAAAAElFTkSuQmCC",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# From the solutions, overfitting will obviously perform poorly on the test set compared to a simpler model.\n",
    "# 50 points randomly from 0 to 100\n",
    "x_test = np.random.random(50) * 100\n",
    "error_test = np.random.randn(len(x_test)) * 5\n",
    "y_test = x_test * 3 + 1 + error_test\n",
    "\n",
    "# Training errors\n",
    "SSE_linear = np.sum((y_pred_linear - y) ** 2)\n",
    "SSE_overfit = np.sum((y_pred_overfit - y) ** 2)\n",
    "\n",
    "print(SSE_linear, SSE_overfit)  # Overfit is lower for training error\n",
    "\n",
    "plt.plot(x_test, y_test, 'go', alpha=0.5)\n",
    "\n",
    "y_est_linear = model(x_test)\n",
    "y_est_poly = model_10(x_test)\n",
    "\n",
    "# Training errors\n",
    "SSE_est_linear = np.sum((y_est_linear - y_test) ** 2)\n",
    "SSE_est_overfit = np.sum((y_est_poly - y_test) ** 2)\n",
    "\n",
    "print(SSE_est_linear, SSE_est_overfit)  # SSE is **very** high for the overfit model."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "*For solution see `solutions/overfitting_one.py`*"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Overfitting with too many variables\n",
    "\n",
    "Overfitting can be caused by a large number of factors. In the above, overfitting was caused by the model being too complex. Overfitting can also happen when you have too many input variables, even if some of them are just random noise!\n",
    "\n",
    "What happens in this case, is that unusual patterns are picked up in the data, leading to pattern matching algorithms (of which all the algorithms we have seen so far are) finding patterns in noise, rather than underlying trends. It results in the same problem overly-complex models do - low training error, high testing error. The cause this time is that the coincidental patterns in the training data are usually not present in the testing data, so they no longer work.\n",
    "\n",
    "This is a case of spurious correlations. For a humorous look at this problem, see http://www.tylervigen.com/spurious-correlations\n",
    "\n",
    "![Spurious Correlation](img/spurious.png)\n",
    "\n",
    "<small>Note: The above data has a correlation $r=0.95$</small>\n",
    "\n",
    "If you compare enough variables, you *will* find a correlation. Whether that makes sense or not is your job as an analyst. \n",
    "\n",
    "All too often in the \"big data\" age, we simply think \"add more data until the computer learns\", but the actual case is the opposite - too much data leads to incorrect learning and wasted effort.\n",
    "\n",
    "To see this in action, we'll download all stock prices for the S&P500, and then use those to predict AAPL:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Let's extract a large number of stocks\n",
    "import quandl\n",
    "import my_secrets\n",
    "quandl.ApiConfig.api_key = my_secrets.QUANDL_API_KEY"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [],
   "source": [
    "with open(\"data/sp500.csv\") as inf:\n",
    "    stocks = inf.readlines()[1:]  # Skip header\n",
    "    # Remove whitespace around stocks, ignore empty lines (like the last one)\n",
    "    stocks = [stock.strip() for stock in stocks if stock.strip()]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "['MMM', 'ABT', 'ABBV', 'ABMD', 'ACN']"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "stocks[:5]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Downloading batch 0\n",
      "Downloading batch 10\n",
      "Downloading batch 20\n",
      "Downloading batch 30\n",
      "Downloading batch 40\n",
      "Downloading batch 50\n",
      "Downloading batch 60\n",
      "Downloading batch 70\n",
      "Downloading batch 80\n",
      "Downloading batch 90\n",
      "Downloading batch 100\n",
      "Downloading batch 110\n",
      "Downloading batch 120\n",
      "Downloading batch 130\n",
      "Downloading batch 140\n",
      "Downloading batch 150\n",
      "Downloading batch 160\n",
      "Downloading batch 170\n",
      "Downloading batch 180\n",
      "Downloading batch 190\n",
      "Downloading batch 200\n",
      "Downloading batch 210\n",
      "Downloading batch 220\n",
      "Downloading batch 230\n",
      "Downloading batch 240\n",
      "Downloading batch 250\n",
      "Downloading batch 260\n",
      "Downloading batch 270\n",
      "Downloading batch 280\n",
      "Downloading batch 290\n",
      "Downloading batch 300\n",
      "Downloading batch 310\n",
      "Downloading batch 320\n",
      "Downloading batch 330\n",
      "Downloading batch 340\n",
      "Downloading batch 350\n",
      "Downloading batch 360\n",
      "Downloading batch 370\n",
      "Downloading batch 380\n",
      "Downloading batch 390\n",
      "Downloading batch 400\n",
      "Downloading batch 410\n",
      "Downloading batch 420\n",
      "Downloading batch 430\n",
      "Downloading batch 440\n",
      "Downloading batch 450\n",
      "Downloading batch 460\n",
      "Downloading batch 470\n",
      "Downloading batch 480\n",
      "Downloading batch 490\n",
      "Downloading batch 500\n"
     ]
    }
   ],
   "source": [
    "import time\n",
    "\n",
    "# Too many to download in one go - get in batches instead\n",
    "batches = []\n",
    "batch_size = 10\n",
    "\n",
    "for i in range(0, len(stocks), batch_size):\n",
    "    print(\"Downloading batch {}\".format(i))\n",
    "    current_batch = quandl.get_table('WIKI/PRICES', ticker = stocks[i:i+batch_size], \n",
    "                            qopts = { 'columns': ['ticker', 'date', 'adj_close'] }, \n",
    "                            date = { 'gte': '2017-01-01', 'lte': '2019-01-01' }, \n",
    "                            paginate=True)\n",
    "    batches.append(current_batch)\n",
    "    time.sleep(1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>ticker</th>\n",
       "      <th>date</th>\n",
       "      <th>adj_close</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>None</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>ZTS</td>\n",
       "      <td>2018-03-27</td>\n",
       "      <td>81.86</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>ZTS</td>\n",
       "      <td>2018-03-26</td>\n",
       "      <td>83.73</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>ZTS</td>\n",
       "      <td>2018-03-23</td>\n",
       "      <td>80.60</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>ZTS</td>\n",
       "      <td>2018-03-22</td>\n",
       "      <td>82.06</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>ZTS</td>\n",
       "      <td>2018-03-21</td>\n",
       "      <td>84.10</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "     ticker       date  adj_close\n",
       "None                             \n",
       "0       ZTS 2018-03-27      81.86\n",
       "1       ZTS 2018-03-26      83.73\n",
       "2       ZTS 2018-03-23      80.60\n",
       "3       ZTS 2018-03-22      82.06\n",
       "4       ZTS 2018-03-21      84.10"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "current_batch.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [],
   "source": [
    "data = pd.concat(batches)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [],
   "source": [
    "stocks = data.pivot(index=\"date\", columns=\"ticker\", values=\"adj_close\")\n",
    "# Fill any missing data using a forward fill\n",
    "stocks.fillna(method='ffill', inplace=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(Timestamp('2017-01-03 00:00:00'), Timestamp('2018-03-27 00:00:00'))"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "stocks.index.min(), stocks.index.max()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [],
   "source": [
    "stock_to_predict = \"AAPL\"\n",
    "X = stocks[[column for column in stocks.columns if column != stock_to_predict]]\n",
    "y = stocks[stock_to_predict]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [],
   "source": [
    "split_date = \"2018-01-01\"\n",
    "X_train, X_test = X[:split_date], X[split_date:]\n",
    "y_train, y_test = y[:split_date], y[split_date:]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We've seen a few methods of doing linear regression now. Use the one you are more comfortable with. Here, we will use sklearn:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "ename": "ValueError",
     "evalue": "Input X contains NaN.\nLinearRegression does not accept missing values encoded as NaN natively. For supervised learning, you might want to consider sklearn.ensemble.HistGradientBoostingClassifier and Regressor which accept missing values encoded as NaNs natively. Alternatively, it is possible to preprocess the data, for instance by using an imputer transformer in a pipeline or drop samples with missing values. See https://scikit-learn.org/stable/modules/impute.html You can find a list of all estimators that handle NaN values at the following page: https://scikit-learn.org/stable/modules/impute.html#estimators-that-handle-nan-values",
     "output_type": "error",
     "traceback": [
      "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[0;31mValueError\u001b[0m                                Traceback (most recent call last)",
      "Cell \u001b[0;32mIn[18], line 5\u001b[0m\n\u001b[1;32m      1\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01msklearn\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mlinear_model\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m LinearRegression\n\u001b[1;32m      3\u001b[0m model \u001b[38;5;241m=\u001b[39m LinearRegression()\n\u001b[0;32m----> 5\u001b[0m \u001b[43mmodel\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mfit\u001b[49m\u001b[43m(\u001b[49m\u001b[43mX_train\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43my_train\u001b[49m\u001b[43m)\u001b[49m \u001b[38;5;66;03m# will throw an error\u001b[39;00m\n",
      "File \u001b[0;32m~/miniconda3/lib/python3.11/site-packages/sklearn/base.py:1474\u001b[0m, in \u001b[0;36m_fit_context.<locals>.decorator.<locals>.wrapper\u001b[0;34m(estimator, *args, **kwargs)\u001b[0m\n\u001b[1;32m   <a href='file:///~/miniconda3/lib/python3.11/site-packages/sklearn/base.py?line=1466'>1467</a>\u001b[0m     estimator\u001b[39m.\u001b[39m_validate_params()\n\u001b[1;32m   <a href='file:///~/miniconda3/lib/python3.11/site-packages/sklearn/base.py?line=1468'>1469</a>\u001b[0m \u001b[39mwith\u001b[39;00m config_context(\n\u001b[1;32m   <a href='file:///~/miniconda3/lib/python3.11/site-packages/sklearn/base.py?line=1469'>1470</a>\u001b[0m     skip_parameter_validation\u001b[39m=\u001b[39m(\n\u001b[1;32m   <a href='file:///~/miniconda3/lib/python3.11/site-packages/sklearn/base.py?line=1470'>1471</a>\u001b[0m         prefer_skip_nested_validation \u001b[39mor\u001b[39;00m global_skip_validation\n\u001b[1;32m   <a href='file:///~/miniconda3/lib/python3.11/site-packages/sklearn/base.py?line=1471'>1472</a>\u001b[0m     )\n\u001b[1;32m   <a href='file:///~/miniconda3/lib/python3.11/site-packages/sklearn/base.py?line=1472'>1473</a>\u001b[0m ):\n\u001b[0;32m-> <a href='file:///~/miniconda3/lib/python3.11/site-packages/sklearn/base.py?line=1473'>1474</a>\u001b[0m     \u001b[39mreturn\u001b[39;00m fit_method(estimator, \u001b[39m*\u001b[39;49margs, \u001b[39m*\u001b[39;49m\u001b[39m*\u001b[39;49mkwargs)\n",
      "File \u001b[0;32m~/miniconda3/lib/python3.11/site-packages/sklearn/linear_model/_base.py:578\u001b[0m, in \u001b[0;36mLinearRegression.fit\u001b[0;34m(self, X, y, sample_weight)\u001b[0m\n\u001b[1;32m    <a href='file:///~/miniconda3/lib/python3.11/site-packages/sklearn/linear_model/_base.py?line=573'>574</a>\u001b[0m n_jobs_ \u001b[39m=\u001b[39m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39mn_jobs\n\u001b[1;32m    <a href='file:///~/miniconda3/lib/python3.11/site-packages/sklearn/linear_model/_base.py?line=575'>576</a>\u001b[0m accept_sparse \u001b[39m=\u001b[39m \u001b[39mFalse\u001b[39;00m \u001b[39mif\u001b[39;00m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39mpositive \u001b[39melse\u001b[39;00m [\u001b[39m\"\u001b[39m\u001b[39mcsr\u001b[39m\u001b[39m\"\u001b[39m, \u001b[39m\"\u001b[39m\u001b[39mcsc\u001b[39m\u001b[39m\"\u001b[39m, \u001b[39m\"\u001b[39m\u001b[39mcoo\u001b[39m\u001b[39m\"\u001b[39m]\n\u001b[0;32m--> <a href='file:///~/miniconda3/lib/python3.11/site-packages/sklearn/linear_model/_base.py?line=577'>578</a>\u001b[0m X, y \u001b[39m=\u001b[39m \u001b[39mself\u001b[39;49m\u001b[39m.\u001b[39;49m_validate_data(\n\u001b[1;32m    <a href='file:///~/miniconda3/lib/python3.11/site-packages/sklearn/linear_model/_base.py?line=578'>579</a>\u001b[0m     X, y, accept_sparse\u001b[39m=\u001b[39;49maccept_sparse, y_numeric\u001b[39m=\u001b[39;49m\u001b[39mTrue\u001b[39;49;00m, multi_output\u001b[39m=\u001b[39;49m\u001b[39mTrue\u001b[39;49;00m\n\u001b[1;32m    <a href='file:///~/miniconda3/lib/python3.11/site-packages/sklearn/linear_model/_base.py?line=579'>580</a>\u001b[0m )\n\u001b[1;32m    <a href='file:///~/miniconda3/lib/python3.11/site-packages/sklearn/linear_model/_base.py?line=581'>582</a>\u001b[0m has_sw \u001b[39m=\u001b[39m sample_weight \u001b[39mis\u001b[39;00m \u001b[39mnot\u001b[39;00m \u001b[39mNone\u001b[39;00m\n\u001b[1;32m    <a href='file:///~/miniconda3/lib/python3.11/site-packages/sklearn/linear_model/_base.py?line=582'>583</a>\u001b[0m \u001b[39mif\u001b[39;00m has_sw:\n",
      "File \u001b[0;32m~/miniconda3/lib/python3.11/site-packages/sklearn/base.py:650\u001b[0m, in \u001b[0;36mBaseEstimator._validate_data\u001b[0;34m(self, X, y, reset, validate_separately, cast_to_ndarray, **check_params)\u001b[0m\n\u001b[1;32m    <a href='file:///~/miniconda3/lib/python3.11/site-packages/sklearn/base.py?line=647'>648</a>\u001b[0m         y \u001b[39m=\u001b[39m check_array(y, input_name\u001b[39m=\u001b[39m\u001b[39m\"\u001b[39m\u001b[39my\u001b[39m\u001b[39m\"\u001b[39m, \u001b[39m*\u001b[39m\u001b[39m*\u001b[39mcheck_y_params)\n\u001b[1;32m    <a href='file:///~/miniconda3/lib/python3.11/site-packages/sklearn/base.py?line=648'>649</a>\u001b[0m     \u001b[39melse\u001b[39;00m:\n\u001b[0;32m--> <a href='file:///~/miniconda3/lib/python3.11/site-packages/sklearn/base.py?line=649'>650</a>\u001b[0m         X, y \u001b[39m=\u001b[39m check_X_y(X, y, \u001b[39m*\u001b[39;49m\u001b[39m*\u001b[39;49mcheck_params)\n\u001b[1;32m    <a href='file:///~/miniconda3/lib/python3.11/site-packages/sklearn/base.py?line=650'>651</a>\u001b[0m     out \u001b[39m=\u001b[39m X, y\n\u001b[1;32m    <a href='file:///~/miniconda3/lib/python3.11/site-packages/sklearn/base.py?line=652'>653</a>\u001b[0m \u001b[39mif\u001b[39;00m \u001b[39mnot\u001b[39;00m no_val_X \u001b[39mand\u001b[39;00m check_params\u001b[39m.\u001b[39mget(\u001b[39m\"\u001b[39m\u001b[39mensure_2d\u001b[39m\u001b[39m\"\u001b[39m, \u001b[39mTrue\u001b[39;00m):\n",
      "File \u001b[0;32m~/miniconda3/lib/python3.11/site-packages/sklearn/utils/validation.py:1263\u001b[0m, in \u001b[0;36mcheck_X_y\u001b[0;34m(X, y, accept_sparse, accept_large_sparse, dtype, order, copy, force_all_finite, ensure_2d, allow_nd, multi_output, ensure_min_samples, ensure_min_features, y_numeric, estimator)\u001b[0m\n\u001b[1;32m   <a href='file:///~/miniconda3/lib/python3.11/site-packages/sklearn/utils/validation.py?line=1257'>1258</a>\u001b[0m         estimator_name \u001b[39m=\u001b[39m _check_estimator_name(estimator)\n\u001b[1;32m   <a href='file:///~/miniconda3/lib/python3.11/site-packages/sklearn/utils/validation.py?line=1258'>1259</a>\u001b[0m     \u001b[39mraise\u001b[39;00m \u001b[39mValueError\u001b[39;00m(\n\u001b[1;32m   <a href='file:///~/miniconda3/lib/python3.11/site-packages/sklearn/utils/validation.py?line=1259'>1260</a>\u001b[0m         \u001b[39mf\u001b[39m\u001b[39m\"\u001b[39m\u001b[39m{\u001b[39;00mestimator_name\u001b[39m}\u001b[39;00m\u001b[39m requires y to be passed, but the target y is None\u001b[39m\u001b[39m\"\u001b[39m\n\u001b[1;32m   <a href='file:///~/miniconda3/lib/python3.11/site-packages/sklearn/utils/validation.py?line=1260'>1261</a>\u001b[0m     )\n\u001b[0;32m-> <a href='file:///~/miniconda3/lib/python3.11/site-packages/sklearn/utils/validation.py?line=1262'>1263</a>\u001b[0m X \u001b[39m=\u001b[39m check_array(\n\u001b[1;32m   <a href='file:///~/miniconda3/lib/python3.11/site-packages/sklearn/utils/validation.py?line=1263'>1264</a>\u001b[0m     X,\n\u001b[1;32m   <a href='file:///~/miniconda3/lib/python3.11/site-packages/sklearn/utils/validation.py?line=1264'>1265</a>\u001b[0m     accept_sparse\u001b[39m=\u001b[39;49maccept_sparse,\n\u001b[1;32m   <a href='file:///~/miniconda3/lib/python3.11/site-packages/sklearn/utils/validation.py?line=1265'>1266</a>\u001b[0m     accept_large_sparse\u001b[39m=\u001b[39;49maccept_large_sparse,\n\u001b[1;32m   <a href='file:///~/miniconda3/lib/python3.11/site-packages/sklearn/utils/validation.py?line=1266'>1267</a>\u001b[0m     dtype\u001b[39m=\u001b[39;49mdtype,\n\u001b[1;32m   <a href='file:///~/miniconda3/lib/python3.11/site-packages/sklearn/utils/validation.py?line=1267'>1268</a>\u001b[0m     order\u001b[39m=\u001b[39;49morder,\n\u001b[1;32m   <a href='file:///~/miniconda3/lib/python3.11/site-packages/sklearn/utils/validation.py?line=1268'>1269</a>\u001b[0m     copy\u001b[39m=\u001b[39;49mcopy,\n\u001b[1;32m   <a href='file:///~/miniconda3/lib/python3.11/site-packages/sklearn/utils/validation.py?line=1269'>1270</a>\u001b[0m     force_all_finite\u001b[39m=\u001b[39;49mforce_all_finite,\n\u001b[1;32m   <a href='file:///~/miniconda3/lib/python3.11/site-packages/sklearn/utils/validation.py?line=1270'>1271</a>\u001b[0m     ensure_2d\u001b[39m=\u001b[39;49mensure_2d,\n\u001b[1;32m   <a href='file:///~/miniconda3/lib/python3.11/site-packages/sklearn/utils/validation.py?line=1271'>1272</a>\u001b[0m     allow_nd\u001b[39m=\u001b[39;49mallow_nd,\n\u001b[1;32m   <a href='file:///~/miniconda3/lib/python3.11/site-packages/sklearn/utils/validation.py?line=1272'>1273</a>\u001b[0m     ensure_min_samples\u001b[39m=\u001b[39;49mensure_min_samples,\n\u001b[1;32m   <a href='file:///~/miniconda3/lib/python3.11/site-packages/sklearn/utils/validation.py?line=1273'>1274</a>\u001b[0m     ensure_min_features\u001b[39m=\u001b[39;49mensure_min_features,\n\u001b[1;32m   <a href='file:///~/miniconda3/lib/python3.11/site-packages/sklearn/utils/validation.py?line=1274'>1275</a>\u001b[0m     estimator\u001b[39m=\u001b[39;49mestimator,\n\u001b[1;32m   <a href='file:///~/miniconda3/lib/python3.11/site-packages/sklearn/utils/validation.py?line=1275'>1276</a>\u001b[0m     input_name\u001b[39m=\u001b[39;49m\u001b[39m\"\u001b[39;49m\u001b[39mX\u001b[39;49m\u001b[39m\"\u001b[39;49m,\n\u001b[1;32m   <a href='file:///~/miniconda3/lib/python3.11/site-packages/sklearn/utils/validation.py?line=1276'>1277</a>\u001b[0m )\n\u001b[1;32m   <a href='file:///~/miniconda3/lib/python3.11/site-packages/sklearn/utils/validation.py?line=1278'>1279</a>\u001b[0m y \u001b[39m=\u001b[39m _check_y(y, multi_output\u001b[39m=\u001b[39mmulti_output, y_numeric\u001b[39m=\u001b[39my_numeric, estimator\u001b[39m=\u001b[39mestimator)\n\u001b[1;32m   <a href='file:///~/miniconda3/lib/python3.11/site-packages/sklearn/utils/validation.py?line=1280'>1281</a>\u001b[0m check_consistent_length(X, y)\n",
      "File \u001b[0;32m~/miniconda3/lib/python3.11/site-packages/sklearn/utils/validation.py:1049\u001b[0m, in \u001b[0;36mcheck_array\u001b[0;34m(array, accept_sparse, accept_large_sparse, dtype, order, copy, force_all_finite, ensure_2d, allow_nd, ensure_min_samples, ensure_min_features, estimator, input_name)\u001b[0m\n\u001b[1;32m   <a href='file:///~/miniconda3/lib/python3.11/site-packages/sklearn/utils/validation.py?line=1042'>1043</a>\u001b[0m     \u001b[39mraise\u001b[39;00m \u001b[39mValueError\u001b[39;00m(\n\u001b[1;32m   <a href='file:///~/miniconda3/lib/python3.11/site-packages/sklearn/utils/validation.py?line=1043'>1044</a>\u001b[0m         \u001b[39m\"\u001b[39m\u001b[39mFound array with dim \u001b[39m\u001b[39m%d\u001b[39;00m\u001b[39m. \u001b[39m\u001b[39m%s\u001b[39;00m\u001b[39m expected <= 2.\u001b[39m\u001b[39m\"\u001b[39m\n\u001b[1;32m   <a href='file:///~/miniconda3/lib/python3.11/site-packages/sklearn/utils/validation.py?line=1044'>1045</a>\u001b[0m         \u001b[39m%\u001b[39m (array\u001b[39m.\u001b[39mndim, estimator_name)\n\u001b[1;32m   <a href='file:///~/miniconda3/lib/python3.11/site-packages/sklearn/utils/validation.py?line=1045'>1046</a>\u001b[0m     )\n\u001b[1;32m   <a href='file:///~/miniconda3/lib/python3.11/site-packages/sklearn/utils/validation.py?line=1047'>1048</a>\u001b[0m \u001b[39mif\u001b[39;00m force_all_finite:\n\u001b[0;32m-> <a href='file:///~/miniconda3/lib/python3.11/site-packages/sklearn/utils/validation.py?line=1048'>1049</a>\u001b[0m     _assert_all_finite(\n\u001b[1;32m   <a href='file:///~/miniconda3/lib/python3.11/site-packages/sklearn/utils/validation.py?line=1049'>1050</a>\u001b[0m         array,\n\u001b[1;32m   <a href='file:///~/miniconda3/lib/python3.11/site-packages/sklearn/utils/validation.py?line=1050'>1051</a>\u001b[0m         input_name\u001b[39m=\u001b[39;49minput_name,\n\u001b[1;32m   <a href='file:///~/miniconda3/lib/python3.11/site-packages/sklearn/utils/validation.py?line=1051'>1052</a>\u001b[0m         estimator_name\u001b[39m=\u001b[39;49mestimator_name,\n\u001b[1;32m   <a href='file:///~/miniconda3/lib/python3.11/site-packages/sklearn/utils/validation.py?line=1052'>1053</a>\u001b[0m         allow_nan\u001b[39m=\u001b[39;49mforce_all_finite \u001b[39m==\u001b[39;49m \u001b[39m\"\u001b[39;49m\u001b[39mallow-nan\u001b[39;49m\u001b[39m\"\u001b[39;49m,\n\u001b[1;32m   <a href='file:///~/miniconda3/lib/python3.11/site-packages/sklearn/utils/validation.py?line=1053'>1054</a>\u001b[0m     )\n\u001b[1;32m   <a href='file:///~/miniconda3/lib/python3.11/site-packages/sklearn/utils/validation.py?line=1055'>1056</a>\u001b[0m \u001b[39mif\u001b[39;00m copy:\n\u001b[1;32m   <a href='file:///~/miniconda3/lib/python3.11/site-packages/sklearn/utils/validation.py?line=1056'>1057</a>\u001b[0m     \u001b[39mif\u001b[39;00m _is_numpy_namespace(xp):\n\u001b[1;32m   <a href='file:///~/miniconda3/lib/python3.11/site-packages/sklearn/utils/validation.py?line=1057'>1058</a>\u001b[0m         \u001b[39m# only make a copy if `array` and `array_orig` may share memory`\u001b[39;00m\n",
      "File \u001b[0;32m~/miniconda3/lib/python3.11/site-packages/sklearn/utils/validation.py:126\u001b[0m, in \u001b[0;36m_assert_all_finite\u001b[0;34m(X, allow_nan, msg_dtype, estimator_name, input_name)\u001b[0m\n\u001b[1;32m    <a href='file:///~/miniconda3/lib/python3.11/site-packages/sklearn/utils/validation.py?line=122'>123</a>\u001b[0m \u001b[39mif\u001b[39;00m first_pass_isfinite:\n\u001b[1;32m    <a href='file:///~/miniconda3/lib/python3.11/site-packages/sklearn/utils/validation.py?line=123'>124</a>\u001b[0m     \u001b[39mreturn\u001b[39;00m\n\u001b[0;32m--> <a href='file:///~/miniconda3/lib/python3.11/site-packages/sklearn/utils/validation.py?line=125'>126</a>\u001b[0m _assert_all_finite_element_wise(\n\u001b[1;32m    <a href='file:///~/miniconda3/lib/python3.11/site-packages/sklearn/utils/validation.py?line=126'>127</a>\u001b[0m     X,\n\u001b[1;32m    <a href='file:///~/miniconda3/lib/python3.11/site-packages/sklearn/utils/validation.py?line=127'>128</a>\u001b[0m     xp\u001b[39m=\u001b[39;49mxp,\n\u001b[1;32m    <a href='file:///~/miniconda3/lib/python3.11/site-packages/sklearn/utils/validation.py?line=128'>129</a>\u001b[0m     allow_nan\u001b[39m=\u001b[39;49mallow_nan,\n\u001b[1;32m    <a href='file:///~/miniconda3/lib/python3.11/site-packages/sklearn/utils/validation.py?line=129'>130</a>\u001b[0m     msg_dtype\u001b[39m=\u001b[39;49mmsg_dtype,\n\u001b[1;32m    <a href='file:///~/miniconda3/lib/python3.11/site-packages/sklearn/utils/validation.py?line=130'>131</a>\u001b[0m     estimator_name\u001b[39m=\u001b[39;49mestimator_name,\n\u001b[1;32m    <a href='file:///~/miniconda3/lib/python3.11/site-packages/sklearn/utils/validation.py?line=131'>132</a>\u001b[0m     input_name\u001b[39m=\u001b[39;49minput_name,\n\u001b[1;32m    <a href='file:///~/miniconda3/lib/python3.11/site-packages/sklearn/utils/validation.py?line=132'>133</a>\u001b[0m )\n",
      "File \u001b[0;32m~/miniconda3/lib/python3.11/site-packages/sklearn/utils/validation.py:175\u001b[0m, in \u001b[0;36m_assert_all_finite_element_wise\u001b[0;34m(X, xp, allow_nan, msg_dtype, estimator_name, input_name)\u001b[0m\n\u001b[1;32m    <a href='file:///~/miniconda3/lib/python3.11/site-packages/sklearn/utils/validation.py?line=157'>158</a>\u001b[0m \u001b[39mif\u001b[39;00m estimator_name \u001b[39mand\u001b[39;00m input_name \u001b[39m==\u001b[39m \u001b[39m\"\u001b[39m\u001b[39mX\u001b[39m\u001b[39m\"\u001b[39m \u001b[39mand\u001b[39;00m has_nan_error:\n\u001b[1;32m    <a href='file:///~/miniconda3/lib/python3.11/site-packages/sklearn/utils/validation.py?line=158'>159</a>\u001b[0m     \u001b[39m# Improve the error message on how to handle missing values in\u001b[39;00m\n\u001b[1;32m    <a href='file:///~/miniconda3/lib/python3.11/site-packages/sklearn/utils/validation.py?line=159'>160</a>\u001b[0m     \u001b[39m# scikit-learn.\u001b[39;00m\n\u001b[1;32m    <a href='file:///~/miniconda3/lib/python3.11/site-packages/sklearn/utils/validation.py?line=160'>161</a>\u001b[0m     msg_err \u001b[39m+\u001b[39m\u001b[39m=\u001b[39m (\n\u001b[1;32m    <a href='file:///~/miniconda3/lib/python3.11/site-packages/sklearn/utils/validation.py?line=161'>162</a>\u001b[0m         \u001b[39mf\u001b[39m\u001b[39m\"\u001b[39m\u001b[39m\\n\u001b[39;00m\u001b[39m{\u001b[39;00mestimator_name\u001b[39m}\u001b[39;00m\u001b[39m does not accept missing values\u001b[39m\u001b[39m\"\u001b[39m\n\u001b[1;32m    <a href='file:///~/miniconda3/lib/python3.11/site-packages/sklearn/utils/validation.py?line=162'>163</a>\u001b[0m         \u001b[39m\"\u001b[39m\u001b[39m encoded as NaN natively. For supervised learning, you might want\u001b[39m\u001b[39m\"\u001b[39m\n\u001b[0;32m   (...)\u001b[0m\n\u001b[1;32m    <a href='file:///~/miniconda3/lib/python3.11/site-packages/sklearn/utils/validation.py?line=172'>173</a>\u001b[0m         \u001b[39m\"\u001b[39m\u001b[39m#estimators-that-handle-nan-values\u001b[39m\u001b[39m\"\u001b[39m\n\u001b[1;32m    <a href='file:///~/miniconda3/lib/python3.11/site-packages/sklearn/utils/validation.py?line=173'>174</a>\u001b[0m     )\n\u001b[0;32m--> <a href='file:///~/miniconda3/lib/python3.11/site-packages/sklearn/utils/validation.py?line=174'>175</a>\u001b[0m \u001b[39mraise\u001b[39;00m \u001b[39mValueError\u001b[39;00m(msg_err)\n",
      "\u001b[0;31mValueError\u001b[0m: Input X contains NaN.\nLinearRegression does not accept missing values encoded as NaN natively. For supervised learning, you might want to consider sklearn.ensemble.HistGradientBoostingClassifier and Regressor which accept missing values encoded as NaNs natively. Alternatively, it is possible to preprocess the data, for instance by using an imputer transformer in a pipeline or drop samples with missing values. See https://scikit-learn.org/stable/modules/impute.html You can find a list of all estimators that handle NaN values at the following page: https://scikit-learn.org/stable/modules/impute.html#estimators-that-handle-nan-values"
     ]
    }
   ],
   "source": [
    "from sklearn.linear_model import LinearRegression\n",
    "\n",
    "model = LinearRegression()\n",
    "\n",
    "model.fit(X_train, y_train) # will throw an error"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "One problem - sklearn doesn't handle NaN values - missing data - very well."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "ticker\n",
       "APTV    True\n",
       "BHGE    True\n",
       "BKNG    True\n",
       "CBRE    True\n",
       "DWDP    True\n",
       "DXC     True\n",
       "HLT     True\n",
       "INFO    True\n",
       "IQV     True\n",
       "TPR     True\n",
       "WELL    True\n",
       "dtype: bool"
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Here are the culprits:\n",
    "is_missing = X_train.isna().any()\n",
    "missing = is_missing[is_missing]  # only show the Trues\n",
    "missing"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [],
   "source": [
    "stocks_cleaned = stocks[[column for column in stocks.columns if column not in missing.index]]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [],
   "source": [
    "stock_to_predict = \"AAPL\"\n",
    "# Also skip the ones in our missing model\n",
    "X = stocks_cleaned.drop(stock_to_predict, axis=1)  # Drop the column, in a VIEW of the original data\n",
    "y = stocks_cleaned[stock_to_predict]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [],
   "source": [
    "split_date = \"2018-01-01\"\n",
    "X_train, X_test = X[:split_date], X[split_date:]\n",
    "y_train, y_test = y[:split_date], y[split_date:]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<style>#sk-container-id-1 {\n",
       "  /* Definition of color scheme common for light and dark mode */\n",
       "  --sklearn-color-text: black;\n",
       "  --sklearn-color-line: gray;\n",
       "  /* Definition of color scheme for unfitted estimators */\n",
       "  --sklearn-color-unfitted-level-0: #fff5e6;\n",
       "  --sklearn-color-unfitted-level-1: #f6e4d2;\n",
       "  --sklearn-color-unfitted-level-2: #ffe0b3;\n",
       "  --sklearn-color-unfitted-level-3: chocolate;\n",
       "  /* Definition of color scheme for fitted estimators */\n",
       "  --sklearn-color-fitted-level-0: #f0f8ff;\n",
       "  --sklearn-color-fitted-level-1: #d4ebff;\n",
       "  --sklearn-color-fitted-level-2: #b3dbfd;\n",
       "  --sklearn-color-fitted-level-3: cornflowerblue;\n",
       "\n",
       "  /* Specific color for light theme */\n",
       "  --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n",
       "  --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, white)));\n",
       "  --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n",
       "  --sklearn-color-icon: #696969;\n",
       "\n",
       "  @media (prefers-color-scheme: dark) {\n",
       "    /* Redefinition of color scheme for dark theme */\n",
       "    --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n",
       "    --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, #111)));\n",
       "    --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n",
       "    --sklearn-color-icon: #878787;\n",
       "  }\n",
       "}\n",
       "\n",
       "#sk-container-id-1 {\n",
       "  color: var(--sklearn-color-text);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 pre {\n",
       "  padding: 0;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 input.sk-hidden--visually {\n",
       "  border: 0;\n",
       "  clip: rect(1px 1px 1px 1px);\n",
       "  clip: rect(1px, 1px, 1px, 1px);\n",
       "  height: 1px;\n",
       "  margin: -1px;\n",
       "  overflow: hidden;\n",
       "  padding: 0;\n",
       "  position: absolute;\n",
       "  width: 1px;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-dashed-wrapped {\n",
       "  border: 1px dashed var(--sklearn-color-line);\n",
       "  margin: 0 0.4em 0.5em 0.4em;\n",
       "  box-sizing: border-box;\n",
       "  padding-bottom: 0.4em;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-container {\n",
       "  /* jupyter's `normalize.less` sets `[hidden] { display: none; }`\n",
       "     but bootstrap.min.css set `[hidden] { display: none !important; }`\n",
       "     so we also need the `!important` here to be able to override the\n",
       "     default hidden behavior on the sphinx rendered scikit-learn.org.\n",
       "     See: https://github.com/scikit-learn/scikit-learn/issues/21755 */\n",
       "  display: inline-block !important;\n",
       "  position: relative;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-text-repr-fallback {\n",
       "  display: none;\n",
       "}\n",
       "\n",
       "div.sk-parallel-item,\n",
       "div.sk-serial,\n",
       "div.sk-item {\n",
       "  /* draw centered vertical line to link estimators */\n",
       "  background-image: linear-gradient(var(--sklearn-color-text-on-default-background), var(--sklearn-color-text-on-default-background));\n",
       "  background-size: 2px 100%;\n",
       "  background-repeat: no-repeat;\n",
       "  background-position: center center;\n",
       "}\n",
       "\n",
       "/* Parallel-specific style estimator block */\n",
       "\n",
       "#sk-container-id-1 div.sk-parallel-item::after {\n",
       "  content: \"\";\n",
       "  width: 100%;\n",
       "  border-bottom: 2px solid var(--sklearn-color-text-on-default-background);\n",
       "  flex-grow: 1;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-parallel {\n",
       "  display: flex;\n",
       "  align-items: stretch;\n",
       "  justify-content: center;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  position: relative;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-parallel-item {\n",
       "  display: flex;\n",
       "  flex-direction: column;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-parallel-item:first-child::after {\n",
       "  align-self: flex-end;\n",
       "  width: 50%;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-parallel-item:last-child::after {\n",
       "  align-self: flex-start;\n",
       "  width: 50%;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-parallel-item:only-child::after {\n",
       "  width: 0;\n",
       "}\n",
       "\n",
       "/* Serial-specific style estimator block */\n",
       "\n",
       "#sk-container-id-1 div.sk-serial {\n",
       "  display: flex;\n",
       "  flex-direction: column;\n",
       "  align-items: center;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  padding-right: 1em;\n",
       "  padding-left: 1em;\n",
       "}\n",
       "\n",
       "\n",
       "/* Toggleable style: style used for estimator/Pipeline/ColumnTransformer box that is\n",
       "clickable and can be expanded/collapsed.\n",
       "- Pipeline and ColumnTransformer use this feature and define the default style\n",
       "- Estimators will overwrite some part of the style using the `sk-estimator` class\n",
       "*/\n",
       "\n",
       "/* Pipeline and ColumnTransformer style (default) */\n",
       "\n",
       "#sk-container-id-1 div.sk-toggleable {\n",
       "  /* Default theme specific background. It is overwritten whether we have a\n",
       "  specific estimator or a Pipeline/ColumnTransformer */\n",
       "  background-color: var(--sklearn-color-background);\n",
       "}\n",
       "\n",
       "/* Toggleable label */\n",
       "#sk-container-id-1 label.sk-toggleable__label {\n",
       "  cursor: pointer;\n",
       "  display: block;\n",
       "  width: 100%;\n",
       "  margin-bottom: 0;\n",
       "  padding: 0.5em;\n",
       "  box-sizing: border-box;\n",
       "  text-align: center;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 label.sk-toggleable__label-arrow:before {\n",
       "  /* Arrow on the left of the label */\n",
       "  content: \"▸\";\n",
       "  float: left;\n",
       "  margin-right: 0.25em;\n",
       "  color: var(--sklearn-color-icon);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 label.sk-toggleable__label-arrow:hover:before {\n",
       "  color: var(--sklearn-color-text);\n",
       "}\n",
       "\n",
       "/* Toggleable content - dropdown */\n",
       "\n",
       "#sk-container-id-1 div.sk-toggleable__content {\n",
       "  max-height: 0;\n",
       "  max-width: 0;\n",
       "  overflow: hidden;\n",
       "  text-align: left;\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-toggleable__content.fitted {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-toggleable__content pre {\n",
       "  margin: 0.2em;\n",
       "  border-radius: 0.25em;\n",
       "  color: var(--sklearn-color-text);\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-toggleable__content.fitted pre {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 input.sk-toggleable__control:checked~div.sk-toggleable__content {\n",
       "  /* Expand drop-down */\n",
       "  max-height: 200px;\n",
       "  max-width: 100%;\n",
       "  overflow: auto;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {\n",
       "  content: \"▾\";\n",
       "}\n",
       "\n",
       "/* Pipeline/ColumnTransformer-specific style */\n",
       "\n",
       "#sk-container-id-1 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  color: var(--sklearn-color-text);\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-label.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "/* Estimator-specific style */\n",
       "\n",
       "/* Colorize estimator box */\n",
       "#sk-container-id-1 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-estimator.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-label label.sk-toggleable__label,\n",
       "#sk-container-id-1 div.sk-label label {\n",
       "  /* The background is the default theme color */\n",
       "  color: var(--sklearn-color-text-on-default-background);\n",
       "}\n",
       "\n",
       "/* On hover, darken the color of the background */\n",
       "#sk-container-id-1 div.sk-label:hover label.sk-toggleable__label {\n",
       "  color: var(--sklearn-color-text);\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "/* Label box, darken color on hover, fitted */\n",
       "#sk-container-id-1 div.sk-label.fitted:hover label.sk-toggleable__label.fitted {\n",
       "  color: var(--sklearn-color-text);\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "/* Estimator label */\n",
       "\n",
       "#sk-container-id-1 div.sk-label label {\n",
       "  font-family: monospace;\n",
       "  font-weight: bold;\n",
       "  display: inline-block;\n",
       "  line-height: 1.2em;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-label-container {\n",
       "  text-align: center;\n",
       "}\n",
       "\n",
       "/* Estimator-specific */\n",
       "#sk-container-id-1 div.sk-estimator {\n",
       "  font-family: monospace;\n",
       "  border: 1px dotted var(--sklearn-color-border-box);\n",
       "  border-radius: 0.25em;\n",
       "  box-sizing: border-box;\n",
       "  margin-bottom: 0.5em;\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-estimator.fitted {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-0);\n",
       "}\n",
       "\n",
       "/* on hover */\n",
       "#sk-container-id-1 div.sk-estimator:hover {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-estimator.fitted:hover {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "/* Specification for estimator info (e.g. \"i\" and \"?\") */\n",
       "\n",
       "/* Common style for \"i\" and \"?\" */\n",
       "\n",
       ".sk-estimator-doc-link,\n",
       "a:link.sk-estimator-doc-link,\n",
       "a:visited.sk-estimator-doc-link {\n",
       "  float: right;\n",
       "  font-size: smaller;\n",
       "  line-height: 1em;\n",
       "  font-family: monospace;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  border-radius: 1em;\n",
       "  height: 1em;\n",
       "  width: 1em;\n",
       "  text-decoration: none !important;\n",
       "  margin-left: 1ex;\n",
       "  /* unfitted */\n",
       "  border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n",
       "  color: var(--sklearn-color-unfitted-level-1);\n",
       "}\n",
       "\n",
       ".sk-estimator-doc-link.fitted,\n",
       "a:link.sk-estimator-doc-link.fitted,\n",
       "a:visited.sk-estimator-doc-link.fitted {\n",
       "  /* fitted */\n",
       "  border: var(--sklearn-color-fitted-level-1) 1pt solid;\n",
       "  color: var(--sklearn-color-fitted-level-1);\n",
       "}\n",
       "\n",
       "/* On hover */\n",
       "div.sk-estimator:hover .sk-estimator-doc-link:hover,\n",
       ".sk-estimator-doc-link:hover,\n",
       "div.sk-label-container:hover .sk-estimator-doc-link:hover,\n",
       ".sk-estimator-doc-link:hover {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-3);\n",
       "  color: var(--sklearn-color-background);\n",
       "  text-decoration: none;\n",
       "}\n",
       "\n",
       "div.sk-estimator.fitted:hover .sk-estimator-doc-link.fitted:hover,\n",
       ".sk-estimator-doc-link.fitted:hover,\n",
       "div.sk-label-container:hover .sk-estimator-doc-link.fitted:hover,\n",
       ".sk-estimator-doc-link.fitted:hover {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-3);\n",
       "  color: var(--sklearn-color-background);\n",
       "  text-decoration: none;\n",
       "}\n",
       "\n",
       "/* Span, style for the box shown on hovering the info icon */\n",
       ".sk-estimator-doc-link span {\n",
       "  display: none;\n",
       "  z-index: 9999;\n",
       "  position: relative;\n",
       "  font-weight: normal;\n",
       "  right: .2ex;\n",
       "  padding: .5ex;\n",
       "  margin: .5ex;\n",
       "  width: min-content;\n",
       "  min-width: 20ex;\n",
       "  max-width: 50ex;\n",
       "  color: var(--sklearn-color-text);\n",
       "  box-shadow: 2pt 2pt 4pt #999;\n",
       "  /* unfitted */\n",
       "  background: var(--sklearn-color-unfitted-level-0);\n",
       "  border: .5pt solid var(--sklearn-color-unfitted-level-3);\n",
       "}\n",
       "\n",
       ".sk-estimator-doc-link.fitted span {\n",
       "  /* fitted */\n",
       "  background: var(--sklearn-color-fitted-level-0);\n",
       "  border: var(--sklearn-color-fitted-level-3);\n",
       "}\n",
       "\n",
       ".sk-estimator-doc-link:hover span {\n",
       "  display: block;\n",
       "}\n",
       "\n",
       "/* \"?\"-specific style due to the `<a>` HTML tag */\n",
       "\n",
       "#sk-container-id-1 a.estimator_doc_link {\n",
       "  float: right;\n",
       "  font-size: 1rem;\n",
       "  line-height: 1em;\n",
       "  font-family: monospace;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  border-radius: 1rem;\n",
       "  height: 1rem;\n",
       "  width: 1rem;\n",
       "  text-decoration: none;\n",
       "  /* unfitted */\n",
       "  color: var(--sklearn-color-unfitted-level-1);\n",
       "  border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 a.estimator_doc_link.fitted {\n",
       "  /* fitted */\n",
       "  border: var(--sklearn-color-fitted-level-1) 1pt solid;\n",
       "  color: var(--sklearn-color-fitted-level-1);\n",
       "}\n",
       "\n",
       "/* On hover */\n",
       "#sk-container-id-1 a.estimator_doc_link:hover {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-3);\n",
       "  color: var(--sklearn-color-background);\n",
       "  text-decoration: none;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 a.estimator_doc_link.fitted:hover {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-3);\n",
       "}\n",
       "</style><div id=\"sk-container-id-1\" class=\"sk-top-container\"><div class=\"sk-text-repr-fallback\"><pre>LinearRegression()</pre><b>In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. <br />On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.</b></div><div class=\"sk-container\" hidden><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-1\" type=\"checkbox\" checked><label for=\"sk-estimator-id-1\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow fitted\">&nbsp;&nbsp;LinearRegression<a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.4/modules/generated/sklearn.linear_model.LinearRegression.html\">?<span>Documentation for LinearRegression</span></a><span class=\"sk-estimator-doc-link fitted\">i<span>Fitted</span></span></label><div class=\"sk-toggleable__content fitted\"><pre>LinearRegression()</pre></div> </div></div></div></div>"
      ],
      "text/plain": [
       "LinearRegression()"
      ]
     },
     "execution_count": 23,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn.linear_model import LinearRegression\n",
    "\n",
    "model = LinearRegression()\n",
    "\n",
    "model.fit(X_train, y_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [],
   "source": [
    "y_train_pred = model.predict(X_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x2a0ad4490>]"
      ]
     },
     "execution_count": 25,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.plot(y_train_pred)\n",
    "plt.plot(y_train.values)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "With *so much* data to use, our predictions are nearly perfect on our training data. Can't see it? Try plotting `plt.plot(y_train.values + 1)`. This near-perfectness is due to the ability of the Linear model to pick and choose the data that best fits it, and it can just keep doing this until it matches as best as it could.\n",
    "\n",
    "However good this model is on the training data, it fails on the testing data:\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [],
   "source": [
    "y_test_pred = model.predict(X_test)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x2a0b787d0>]"
      ]
     },
     "execution_count": 27,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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tmrVKk3T1OsUEhKivf322677ZGVlaYC2du1afw3TcPr06aM9//zz8nq5obKyUhs2bJj25ZdfameeeaZ2zz33aJom/9ba8+tf/1obP358m7fJa9a2n/3sZ9qsWbPavd2bnwkyowI0NDSwefNm5s+f77rObDYzf/581q5d68eRBY6cnBwKCwtbvYaxsbFMnz5dXsOTlJeXAxAfHw/A5s2baWxsbPXaZWZmkp6eLq8dYLfbeeONN6iurmbGjBnyerlh8eLFnH/++a1eI5B/ax3Zt28faWlpDB48mOuuu468vDxAXrP2fPjhh0yZMoUrrriCpKQkJk6cyL/+9S/X7d78TJBABSgpKcFut5OcnNzq+uTkZAoLC/00qsCiv07yGnbM4XBw7733MnPmTMaMGQOo185msxEXF9fqvsH+2u3YsYOoqChCQ0O5/fbbee+99xg1apS8Xp1444032LJlC4899tgpt8lr17bp06fz8ssv89lnn/HMM8+Qk5PDGWecQWVlpbxm7Th48CDPPPMMw4YN4/PPP+eOO+7g7rvv5pVXXgG8+5kQkLsnCxGoFi9ezM6dO1utf4u2jRgxgm3btlFeXs7//vc/brzxRlatWuXvYRna4cOHueeee/jyyy8JCwvz93ACxsKFC13H48aNY/r06WRkZPDWW28RHh7ux5EZl8PhYMqUKTz66KMATJw4kZ07d/Lss89y4403evW5ZEYFSExMxGKxnJLFXVRUREpKip9GFVj010lew/bdeeedfPTRR6xYsYL+/fu7rk9JSaGhoYGysrJW9w/2185mszF06FAmT57MY489xvjx4/nb3/4mr1cHNm/eTHFxMZMmTcJqtWK1Wlm1ahVPPfUUVquV5ORkee3cEBcXx/Dhw9m/f7/8e2tHamoqo0aNanXdyJEjXUtm3vxMkEAF9YY4efJkli1b5rrO4XCwbNkyZsyY4ceRBY5BgwaRkpLS6jWsqKhg/fr1Qf8aaprGnXfeyXvvvcfy5csZNGhQq9snT55MSEhIq9cuOzubvLy8oH/tWnI4HNTX18vr1YF58+axY8cOtm3b5vqZMmUK1113netYXrvOVVVVceDAAVJTU+XfWztmzpx5SpuFvXv3kpGRAXj5M6GrGb+9zRtvvKGFhoZqL7/8srZ7927ttttu0+Li4rTCwkJ/D80wKisrta1bt2pbt27VAO3JJ5/Utm7dquXm5mqapmmPP/64FhcXp33wwQfa9u3btYsvvlgbNGiQVltb6+eR+9cdd9yhxcbGaitXrtQKCgpcPzU1Na773H777Vp6erq2fPlybdOmTdqMGTO0GTNm+HHU/vXggw9qq1at0nJycrTt27drDz74oGYymbQvvvhC0zR5vTzRsupH0+S1a8uPf/xjbeXKlVpOTo62Zs0abf78+VpiYqJWXFysaZq8Zm3ZsGGDZrVatd///vfavn37tFdffVWLiIjQ/vvf/7ru463PBAlUWnj66ae19PR0zWazadOmTdPWrVvn7yEZyooVKzTglJ8bb7xR0zRVjvarX/1KS05O1kJDQ7V58+Zp2dnZ/h20AbT1mgHaSy+95LpPbW2t9qMf/Ujr06ePFhERoV166aVaQUGB/wbtZ9///ve1jIwMzWazaX379tXmzZvnClI0TV4vT5wcqMhrd6qrrrpKS01N1Ww2m9avXz/tqquu0vbv3++6XV6zti1dulQbM2aMFhoaqmVmZmrPPfdcq9u99Zlg0jRN69K8jxBCCCGEj0mOihBCCCEMSwIVIYQQQhiWBCpCCCGEMCwJVIQQQghhWBKoCCGEEMKwJFARQgghhGFJoCKEEEIIw5JARQghhBCGJYGKEEIIIQxLAhUhhBBCGJYEKkIIIYQwLAlUhBBCCGFY/w/ATyjye8UaHwAAAABJRU5ErkJggg==",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.plot(y_test_pred)\n",
    "plt.plot(y_test.values)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "To detect overfitting, one method is to use a validation curve. This marks \"complexity\" as the x-axis, and plots training and testing scores. Typically, the two curves start apart (underfitting), converge, then diverge again as overfitting kicks in.\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.preprocessing import PolynomialFeatures\n",
    "from sklearn.linear_model import LinearRegression\n",
    "from sklearn.pipeline import make_pipeline\n",
    "\n",
    "def PolynomialRegression(degree=2, **kwargs):\n",
    "    return make_pipeline(PolynomialFeatures(degree),\n",
    "                         LinearRegression(**kwargs))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The above code uses a scikit-learn Pipeline to create a `degree`-dimensional copy of all features. For instance, `x` with degree 3 returns features $x$, $x^2$, and $x^3$ (and $c$). A linear regression is then fit on these models."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[3, 2, 5, 3, 3]\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<matplotlib.legend.Legend at 0x17f959250>"
      ]
     },
     "execution_count": 29,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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gkGRO9DrpREiIRrfZzyWkiK1IyIiIosYFLmDbdsajxDVJwRw5ozUjoiIiCxiUOQOCgrs246IiMgDMShyB1262LcdERGRB2JQ5A5GjpRWmalUlu9XqYCoKKkdERERWcSgyB2o1dKye6BxYGS8vXAh6xURERE1g0GRu0hKAr7+Guja1fx4ZKR0nHWKiIiImsXije4kKQkYM4YVrYmIiFqBQZG7UauB22+XuxdEREQuh9NnRERERGBQRERERASAQRERERERAAZFRERERAAYFBEREREBYFBEREREBIBBEREREREABkVEREREABgUEREREQFgRWurCSEAADqdTuaeEBERkbWM523jebw5DIqsVF5eDgCIioqSuSdERERkq/LycgQHBzfbRiWsCZ0IBoMB586dQ7t27aBSqez63DqdDlFRUThz5gy0Wq1dn5uu4efsHPycnYOfs3Pwc3YeR33WQgiUl5cjIiICXl7NZw1xpMhKXl5eiIyMdOhraLVafumcgJ+zc/Bzdg5+zs7Bz9l5HPFZtzRCZMREayIiIiIwKCIiIiICwKBIEXx9fTF//nz4+vrK3RW3xs/ZOfg5Owc/Z+fg5+w8SvismWhNREREBI4UEREREQFgUEREREQEgEEREREREQAGRUREREQAGBTJbsmSJYiJiYGfnx+GDx+OXbt2yd0lt5Oamoobb7wR7dq1Q2hoKMaOHYucnBy5u+XWXn/9dahUKqSkpMjdFbeUn5+Phx56CCEhIfD390f//v2xZ88eubvlVvR6PV544QXExsbC398f1113HV5++WWr9s+ipv3000+47777EBERAZVKhW+++cbsfiEE5s2bhy5dusDf3x+jR4/G8ePHndY/BkUy+vLLLzFr1izMnz8fe/fuxcCBA5GQkIDi4mK5u+ZWtm7diuTkZOzYsQMbN25EbW0t7rrrLlRUVMjdNbe0e/du/Otf/8KAAQPk7opbunTpEm6++Wb4+Phg3bp1OHz4MN5++2106NBB7q65lTfeeANLly7F+++/jyNHjuCNN97AggULsHjxYrm75tIqKiowcOBALFmyxOL9CxYswKJFi7Bs2TLs3LkTgYGBSEhIQFVVlXM6KEg2cXFxIjk52XRbr9eLiIgIkZqaKmOv3F9xcbEAILZu3Sp3V9xOeXm56Nmzp9i4caO47bbbxIwZM+Tuktt57rnnxC233CJ3N9xeYmKimDJlitmxpKQkMWnSJJl65H4AiDVr1phuGwwGER4eLt58803TsdLSUuHr6ytWrlzplD5xpEgmNTU1yMrKwujRo03HvLy8MHr0aGRmZsrYM/dXVlYGAOjYsaPMPXE/ycnJSExMNPt/Tfb17bffYtiwYfjjH/+I0NBQDB48GB9++KHc3XI7I0aMwKZNm3Ds2DEAwP79+/Hzzz/jnnvukbln7is3NxeFhYVmvz+Cg4MxfPhwp50XuSGsTEpKSqDX6xEWFmZ2PCwsDEePHpWpV+7PYDAgJSUFN998M/r16yd3d9zKF198gb1792L37t1yd8WtnTx5EkuXLsWsWbPwt7/9Dbt378b06dOh0WgwefJkubvnNp5//nnodDr07t0barUaer0er776KiZNmiR319xWYWEhAFg8LxrvczQGReRRkpOTcfDgQfz8889yd8WtnDlzBjNmzMDGjRvh5+cnd3fcmsFgwLBhw/Daa68BAAYPHoyDBw9i2bJlDIrs6KuvvsLnn3+OtLQ09O3bF9nZ2UhJSUFERAQ/ZzfG6TOZdOrUCWq1GkVFRWbHi4qKEB4eLlOv3Nu0adPw/fffIyMjA5GRkXJ3x61kZWWhuLgYQ4YMgbe3N7y9vbF161YsWrQI3t7e0Ov1cnfRbXTp0gV9+vQxO3bDDTfg9OnTMvXIPc2ePRvPP/88/vSnP6F///54+OGHMXPmTKSmpsrdNbdlPPfJeV5kUCQTjUaDoUOHYtOmTaZjBoMBmzZtQnx8vIw9cz9CCEybNg1r1qzB5s2bERsbK3eX3M6dd96JAwcOIDs723QZNmwYJk2ahOzsbKjVarm76DZuvvnmRiUljh07hm7dusnUI/dUWVkJLy/zU6RarYbBYJCpR+4vNjYW4eHhZudFnU6HnTt3Ou28yOkzGc2aNQuTJ0/GsGHDEBcXh4ULF6KiogKPPfaY3F1zK8nJyUhLS8PatWvRrl0709x0cHAw/P39Ze6de2jXrl2jHK3AwECEhIQwd8vOZs6ciREjRuC1117DAw88gF27duGDDz7ABx98IHfX3Mp9992HV199FdHR0ejbty/27duHd955B1OmTJG7ay7t8uXLOHHihOl2bm4usrOz0bFjR0RHRyMlJQWvvPIKevbsidjYWLzwwguIiIjA2LFjndNBp6xxoyYtXrxYREdHC41GI+Li4sSOHTvk7pLbAWDx8umnn8rdNbfGJfmO891334l+/foJX19f0bt3b/HBBx/I3SW3o9PpxIwZM0R0dLTw8/MT3bt3F3//+99FdXW13F1zaRkZGRZ/H0+ePFkIIS3Lf+GFF0RYWJjw9fUVd955p8jJyXFa/1RCsDwnEREREXOKiIiIiMCgiIiIiAgAgyIiIiIiAAyKiIiIiAAwKCIiIiICwKCIiIiICACDIiIiIiIADIqIiIiIADAoIiIiIgLAoIiIiIgIAIMiIiIiIgAMioiIiIgAAP8PtWDUOoNLXacAAAAASUVORK5CYII=",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Create a dataset\n",
    "params = [3, 2, 5, 3, 3]  # 5 random numbers - 4 degree polynomial\n",
    "model = np.poly1d(params)\n",
    "print(params)\n",
    "\n",
    "x_model = np.linspace(0, 10, 1000)  # x-spaced data\n",
    "y_model = model(x_model)   # Actual y values\n",
    "plt.plot(x_model, y_model, label='Model')\n",
    "\n",
    "x = (np.random.random(90) * 10)  # 1000 random points between 0 and 10, in a 2D matrix\n",
    "y = model(x) + np.random.randn(len(x)) * 5000  # Use the model, but  with noise\n",
    "plt.plot(x, y, 'ro', label=\"Data\")\n",
    "plt.legend()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.model_selection import validation_curve\n",
    "\n",
    "def rms_error(model, X, y):\n",
    "    y_pred = model.predict(X)\n",
    "    return np.sqrt(np.mean((y - y_pred) ** 2))\n",
    "\n",
    "x = x.reshape(-1, 1)  # Make 2D matrix, as required by sklearn\n",
    "degree = np.arange(0, 20)\n",
    "val_train, val_test = validation_curve(PolynomialRegression(), x, y,\n",
    "                                        param_name='polynomialfeatures__degree', \n",
    "                                        param_range = degree, \n",
    "                                        cv=7,\n",
    "                                        scoring=rms_error)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAk0AAAGwCAYAAAC0HlECAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/TGe4hAAAACXBIWXMAAA9hAAAPYQGoP6dpAABvgElEQVR4nO3deXwTZeIG8GdyNWnatLTQC8opl4qcioB4LBUQPPAG2QUVcdcFFRVFf64oXrgouJ6groq7q+uxnguKgIK4iMghcloQSjl6AT3SO8e8vz8mmSZtkiYlaZv2+X6YT5OZN5M3TUuevtdIQggBIiIiIgpI09IVICIiIooGDE1EREREQWBoIiIiIgoCQxMRERFREBiaiIiIiILA0EREREQUBIYmIiIioiDoWroCbYUsy8jLy0N8fDwkSWrp6hAREVEQhBAoLy9HRkYGNJrAbUkMTWGSl5eHzMzMlq4GERERNcHRo0fRpUuXgGUYmsIkPj4egPJNt1gsLVwbIiIiCobVakVmZqb6OR4IQ1OYuLvkLBYLQxMREVGUCWZoDQeCExEREQWBoYmIiIgoCAxNREREREHgmCYiImo1nE4n7HZ7S1eD2hC9Xg+tVhuWczE0ERFRixNCoKCgAKWlpS1dFWqDEhMTkZaWdtrrKDI0ERFRi3MHppSUFMTGxnKRYAoLIQSqqqpQVFQEAEhPTz+t8zE0ERFRi3I6nWpgSk5ObunqUBtjMpkAAEVFRUhJSTmtrjoOBCciohblHsMUGxvbwjWhtsr9s3W64+UYmoiIqFVglxxFSrh+thiaiIiIiILA0EREREQUBIYmIiKiVqJ79+7429/+FnT59evXQ5IkLtXQTDh7joiIqIkuvvhiDBo0KKSgE8iWLVtgNpuDLj9y5Ejk5+cjISEhLM9PgTE0ERERRZAQAk6nEzpd4x+5nTp1CuncBoMBaWlpTa1aq2W326HX61u6Gg2wey4ayM6WrgERUbMSQqDK5miRTQgRVB1vvvlmfPfdd3jhhRcgSRIkScLhw4fVLrOvvvoKQ4cORUxMDP73v//h4MGDuOqqq5Camoq4uDice+65WLt2rdc563fPSZKEv//977j66qsRGxuL3r1744svvlCP1++eW758ORITE/H111+jf//+iIuLw/jx45Gfn68+xuFw4K677kJiYiKSk5Mxb948TJ8+HZMmTfL7WnNzc3HFFVegQ4cOMJvNOOuss/Dll1+qx/fs2YPLL78cFosF8fHxGD16NA4ePAgAkGUZjz/+OLp06YKYmBgMGjQIq1atUh97+PBhSJKEDz74ABdddBGMRiPeffddAMDf//539O/fH0ajEf369cOrr76qPs5ms2H27NlIT0+H0WhEt27dsHDhwqDeu6ZiS1M0cNoAjamla0FE1Gyq7U6cOf/rFnnuvY+PQ6yh8Y/HF154Afv378fZZ5+Nxx9/HIDSUnT48GEAwIMPPojnnnsOPXv2RIcOHXD06FFMmDABTz31FGJiYvCPf/wDV1xxBbKzs9G1a1e/z7NgwQIsWrQIzz77LF566SVMnToVubm5SEpK8lm+qqoKzz33HP75z39Co9Hg97//PebOnasGkb/+9a9499138fbbb6N///544YUX8Nlnn+GSSy7xW4dZs2bBZrNhw4YNMJvN2Lt3L+Li4gAAx48fx4UXXoiLL74Y3377LSwWCzZu3AiHw6F+nxYvXozXXnsNgwcPxltvvYUrr7wSe/bsQe/evdXnePDBB7F48WIMHjxYDU7z58/Hyy+/jMGDB+Pnn3/GzJkzYTabMX36dLz44ov44osv8OGHH6Jr1644evQojh492uj7djoYmqKB0w7oGZqIiFqThIQEGAwGxMbG+uwie/zxx3HppZeq95OSkjBw4ED1/hNPPIFPP/0UX3zxBWbPnu33eW6++WZMmTIFAPD000/jxRdfxE8//YTx48f7LG+327Fs2TL06tULADB79mw11AHASy+9hIceeghXX301AODll1/2ajXy5ciRI7j22msxYMAAAEDPnj3VY6+88goSEhLw/vvvq11qffr0UY8/99xzmDdvHiZPngxACW3r1q3D3/72N7zyyitquTlz5uCaa65R7z/66KNYvHixuq9Hjx7Yu3cvXnvtNUyfPh1HjhxB7969ccEFF0CSJHTr1i3gawgHhqaoIJTgpG19/btERJFg0mux9/FxLfbc4TBs2DCv+xUVFXjsscewcuVK5Ofnw+FwoLq6GkeOHAl4nnPOOUe9bTabYbFY1Gup+RIbG6sGJkC53pq7fFlZGQoLC3Heeeepx7VaLYYOHQpZlv2e86677sIdd9yB1atXIysrC9dee61arx07dmD06NE+xyBZrVbk5eVh1KhRXvtHjRqFX375xWuf5/ersrIS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efJklJaWYtWqVUHV0Wq1IiEhAWVlZbBYLOH/JhAREVHYhfL5HRUtTbNmzcLEiRORlZXltX/btm2w2+1e+/v164euXbti06ZNAIBNmzZhwIABamACgHHjxsFqtWLPnj1qmfrnHjdunHoOX2pra2G1Wr02IiIiarta/ZID77//PrZv344tW7Y0OFZQUACDwYDExESv/ampqSgoKFDLeAYm93H3sUBlrFYrqqurYTKZGjz3woULsWDBgia/LiIiIoourbql6ejRo7j77rvx7rvvwmg0tnR1vDz00EMoKytTt6NHj7Z0lYiIiCiCWnVo2rZtG4qKijBkyBDodDrodDp89913ePHFF6HT6ZCamgqbzYbS0lKvxxUWFiItLQ0AkJaW1mA2nft+Y2UsFovPViYAiImJgcVi8dqIiIio7WrVoWnMmDHYtWsXduzYoW7Dhg3D1KlT1dt6vR7ffPON+pjs7GwcOXIEI0aMAACMGDECu3btQlFRkVpmzZo1sFgsOPPMM9Uynudwl3Gfg4iIiKhVj2mKj4/H2Wef7bXPbDYjOTlZ3T9jxgzce++9SEpKgsViwZ133okRI0bg/PPPBwCMHTsWZ555Jv7whz9g0aJFKCgowF/+8hfMmjULMTExAIA//elPePnll/HAAw/g1ltvxbfffosPP/wQK1eubN4XTERERK1Wqw5NwXj++eeh0Whw7bXXora2FuPGjcOrr76qHtdqtVixYgXuuOMOjBgxAmazGdOnT8fjjz+ulunRowdWrlyJe+65By+88AK6dOmCv//97xg3blxLvCQiIiJqhaJinaZowHWaiIiIok+bW6eJiIiIqKUxNBEREREFIerHNLUW7l5OrgxOREQUPdyf28GMVmJoCpPy8nIAQGZmZgvXhIiIiEJVXl6OhISEgGU4EDxMZFlGXl4e4uPjIUlSWM9ttVqRmZmJo0ePtvlB5nytbVd7er18rW1Xe3q97eW1CiFQXl6OjIwMaDSBRy2xpSlMNBoNunTpEtHnaE8rj/O1tl3t6fXytbZd7en1tofX2lgLkxsHghMREREFgaGJiIiIKAgMTVEgJiYGjz76qHrZl7aMr7Xtak+vl6+17WpPr7c9vdZgcSA4ERERURDY0kREREQUBIYmIiIioiAwNBEREREFgaGJiIiIKAgMTa3EK6+8gu7du8NoNGL48OH46aefApb/6KOP0K9fPxiNRgwYMABffvllM9W06RYuXIhzzz0X8fHxSElJwaRJk5CdnR3wMcuXL4ckSV6b0Whspho33WOPPdag3v369Qv4mGh8T926d+/e4PVKkoRZs2b5LB9N7+uGDRtwxRVXICMjA5Ik4bPPPvM6LoTA/PnzkZ6eDpPJhKysLBw4cKDR84b6O99cAr1eu92OefPmYcCAATCbzcjIyMC0adOQl5cX8JxN+X1oDo29tzfffHODeo8fP77R87bG97ax1+rr91eSJDz77LN+z9la39dIYmhqBT744APce++9ePTRR7F9+3YMHDgQ48aNQ1FRkc/yP/zwA6ZMmYIZM2bg559/xqRJkzBp0iTs3r27mWsemu+++w6zZs3Cjz/+iDVr1sBut2Ps2LGorKwM+DiLxYL8/Hx1y83NbaYan56zzjrLq97/+9///JaN1vfUbcuWLV6vdc2aNQCA66+/3u9jouV9raysxMCBA/HKK6/4PL5o0SK8+OKLWLZsGTZv3gyz2Yxx48ahpqbG7zlD/Z1vToFeb1VVFbZv345HHnkE27dvxyeffILs7GxceeWVjZ43lN+H5tLYewsA48eP96r3v//974DnbK3vbWOv1fM15ufn46233oIkSbj22msDnrc1vq8RJajFnXfeeWLWrFnqfafTKTIyMsTChQt9lr/hhhvExIkTvfYNHz5c/PGPf4xoPcOtqKhIABDfffed3zJvv/22SEhIaL5Khcmjjz4qBg4cGHT5tvKeut19992iV69eQpZln8ej9X0FID799FP1vizLIi0tTTz77LPqvtLSUhETEyP+/e9/+z1PqL/zLaX+6/Xlp59+EgBEbm6u3zKh/j60BF+vdfr06eKqq64K6TzR8N4G875eddVV4ne/+13AMtHwvoYbW5pamM1mw7Zt25CVlaXu02g0yMrKwqZNm3w+ZtOmTV7lAWDcuHF+y7dWZWVlAICkpKSA5SoqKtCtWzdkZmbiqquuwp49e5qjeqftwIEDyMjIQM+ePTF16lQcOXLEb9m28p4Cys/0v/71L9x6660BL14dre+rp5ycHBQUFHi9dwkJCRg+fLjf964pv/OtWVlZGSRJQmJiYsByofw+tCbr169HSkoK+vbtizvuuAOnTp3yW7atvLeFhYVYuXIlZsyY0WjZaH1fm4qhqYWdPHkSTqcTqampXvtTU1NRUFDg8zEFBQUhlW+NZFnGnDlzMGrUKJx99tl+y/Xt2xdvvfUWPv/8c/zrX/+CLMsYOXIkjh071oy1Dd3w4cOxfPlyrFq1CkuXLkVOTg5Gjx6N8vJyn+Xbwnvq9tlnn6G0tBQ333yz3zLR+r7W535/QnnvmvI731rV1NRg3rx5mDJlSsALuob6+9BajB8/Hv/4xz/wzTff4K9//Su+++47XHbZZXA6nT7Lt5X39p133kF8fDyuueaagOWi9X09HbqWrgC1T7NmzcLu3bsb7f8eMWIERowYod4fOXIk+vfvj9deew1PPPFEpKvZZJdddpl6+5xzzsHw4cPRrVs3fPjhh0H99RbN3nzzTVx22WXIyMjwWyZa31eqY7fbccMNN0AIgaVLlwYsG62/D5MnT1ZvDxgwAOeccw569eqF9evXY8yYMS1Ys8h66623MHXq1EYnZ0Tr+3o62NLUwjp27AitVovCwkKv/YWFhUhLS/P5mLS0tJDKtzazZ8/GihUrsG7dOnTp0iWkx+r1egwePBi//fZbhGoXGYmJiejTp4/fekf7e+qWm5uLtWvX4rbbbgvpcdH6vrrfn1Deu6b8zrc27sCUm5uLNWvWBGxl8qWx34fWqmfPnujYsaPfereF9/b7779HdnZ2yL/DQPS+r6FgaGphBoMBQ4cOxTfffKPuk2UZ33zzjddf4p5GjBjhVR4A1qxZ47d8ayGEwOzZs/Hpp5/i22+/RY8ePUI+h9PpxK5du5Cenh6BGkZORUUFDh486Lfe0fqe1vf2228jJSUFEydODOlx0fq+9ujRA2lpaV7vndVqxebNm/2+d035nW9N3IHpwIEDWLt2LZKTk0M+R2O/D63VsWPHcOrUKb/1jvb3FlBaiocOHYqBAweG/NhofV9D0tIj0UmI999/X8TExIjly5eLvXv3ittvv10kJiaKgoICIYQQf/jDH8SDDz6olt+4caPQ6XTiueeeE/v27ROPPvqo0Ov1YteuXS31EoJyxx13iISEBLF+/XqRn5+vblVVVWqZ+q91wYIF4uuvvxYHDx4U27ZtE5MnTxZGo1Hs2bOnJV5C0O677z6xfv16kZOTIzZu3CiysrJEx44dRVFRkRCi7bynnpxOp+jatauYN29eg2PR/L6Wl5eLn3/+Wfz8888CgFiyZIn4+eef1dlizzzzjEhMTBSff/652Llzp7jqqqtEjx49RHV1tXqO3/3ud+Kll15S7zf2O9+SAr1em80mrrzyStGlSxexY8cOr9/j2tpa9Rz1X29jvw8tJdBrLS8vF3PnzhWbNm0SOTk5Yu3atWLIkCGid+/eoqamRj1HtLy3jf0cCyFEWVmZiI2NFUuXLvV5jmh5XyOJoamVeOmll0TXrl2FwWAQ5513nvjxxx/VYxdddJGYPn26V/kPP/xQ9OnTRxgMBnHWWWeJlStXNnONQwfA5/b222+rZeq/1jlz5qjfl9TUVDFhwgSxffv25q98iG688UaRnp4uDAaD6Ny5s7jxxhvFb7/9ph5vK++pp6+//loAENnZ2Q2ORfP7um7dOp8/t+7XI8uyeOSRR0RqaqqIiYkRY8aMafA96Natm3j00Ue99gX6nW9JgV5vTk6O39/jdevWqeeo/3ob+31oKYFea1VVlRg7dqzo1KmT0Ov1olu3bmLmzJkNwk+0vLeN/RwLIcRrr70mTCaTKC0t9XmOaHlfI0kSQoiINmURERERtQEc00REREQUBIYmIiIioiAwNBEREREFgaGJiIiIKAgMTURERERBYGgiIiIiCgJDExEREVEQGJqIiIiIgsDQRERt3sUXX4w5c+a0dDWIKMoxNBEREREFgaGJiOg02Wy2lq4CETUDhiYialMqKysxbdo0xMXFIT09HYsXL/Y6Xltbi7lz56Jz584wm80YPnw41q9f71XmjTfeQGZmJmJjY3H11VdjyZIlSExMVI8/9thjGDRoEP7+97+jR48eMBqNAIDS0lLcdttt6NSpEywWC373u9/hl19+8Tr3559/jiFDhsBoNKJnz55YsGABHA5HRL4XRBReDE1E1Kbcf//9+O677/D5559j9erVWL9+PbZv364enz17NjZt2oT3338fO3fuxPXXX4/x48fjwIEDAICNGzfiT3/6E+6++27s2LEDl156KZ566qkGz/Pbb7/h448/xieffIIdO3YAAK6//noUFRXhq6++wrZt2zBkyBCMGTMGxcXFAIDvv/8e06ZNw9133429e/fitddew/Lly32en4haIUFE1EaUl5cLg8EgPvzwQ3XfqVOnhMlkEnfffbfIzc0VWq1WHD9+3OtxY8aMEQ899JAQQogbb7xRTJw40ev41KlTRUJCgnr/0UcfFXq9XhQVFan7vv/+e2GxWERNTY3XY3v16iVee+019Xmefvppr+P//Oc/RXp6etNfNBE1G11LhzYionA5ePAgbDYbhg8fru5LSkpC3759AQC7du2C0+lEnz59vB5XW1uL5ORkAEB2djauvvpqr+PnnXceVqxY4bWvW7du6NSpk3r/l19+QUVFhXoet+rqahw8eFAts3HjRq+WJafTiZqaGlRVVSE2NrapL52ImgFDExG1GxUVFdBqtdi2bRu0Wq3Xsbi4uJDOZTabG5w7PT29wfgoAOp4qIqKCixYsADXXHNNgzLucVFE1HoxNBFRm9GrVy/o9Xps3rwZXbt2BQCUlJRg//79uOiiizB48GA4nU4UFRVh9OjRPs/Rt29fbNmyxWtf/fu+DBkyBAUFBdDpdOjevbvfMtnZ2TjjjDNCe2FE1CowNBFRmxEXF4cZM2bg/vvvR3JyMlJSUvDwww9Do1HmvPTp0wdTp07FtGnTsHjxYgwePBgnTpzAN998g3POOQcTJ07EnXfeiQsvvBBLlizBFVdcgW+//RZfffUVJEkK+NxZWVkYMWIEJk2ahEWLFqFPnz7Iy8vDypUrcfXVV2PYsGGYP38+Lr/8cnTt2hXXXXcdNBoNfvnlF+zevRtPPvlkc3yLiOg0cPYcEbUpzz77LEaPHo0rrrgCWVlZuOCCCzB06FD1+Ntvv41p06bhvvvuQ9++fTFp0iRs2bJFbZkaNWoUli1bhiVLlmDgwIFYtWoV7rnnnka7zyRJwpdffokLL7wQt9xyC/r06YPJkycjNzcXqampAIBx48ZhxYoVWL16Nc4991ycf/75eP7559GtW7fIfUOIKGwkIYRo6UoQEbVmM2fOxK+//orvv/++patCRC2I3XNERPU899xzuPTSS2E2m/HVV1/hnXfewauvvtrS1SKiFsaWJiKiem644QasX78e5eXl6NmzJ+6880786U9/aulqEVELY2giIiIiCgIHghMREREFgaGJiIiIKAgMTURERERBYGgiIiIiCgJDExEREVEQGJqIiIiIgsDQRERERBQEhiYiIiKiIPw/1nIUdOEyfRMAAAAASUVORK5CYII=",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "def plot_with_err(x, data, **kwargs):\n",
    "    mu, std = data.mean(1), data.std(1)\n",
    "    lines = plt.plot(x, mu, '-', **kwargs)\n",
    "    plt.fill_between(x, mu - std, mu + std, edgecolor='none',\n",
    "                     facecolor=lines[0].get_color(), alpha=0.2)\n",
    "\n",
    "plot_with_err(degree, val_train, label='training scores')\n",
    "plot_with_err(degree, val_test, label='testing scores')\n",
    "plt.xlabel('degree'); plt.ylabel('rms error')\n",
    "plt.legend();"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Note in the above, that the errors start to diverge around degree 5. This is a little \"late\" (I would choose degree = 3 based on this graph), but it gives a sense that values any higher are overfitting. This is because the training and testing scores are diverging after this point.\n",
    "\n",
    "With graphs like these, you can reduce the overall training error with more data, and you can make the graphs converge with a better fitting model.\n",
    "\n",
    "Note that once you use testing data to do any training, it can't be used for evaluation. In this case, we would be using our test set to decide the degree of the polynomial. After this point, that testing data has been used in training, and you would need *more* data to give a proper evaluation of the expected performance of the model.\n",
    "\n",
    "Note that, as we have seen, overfitting can happen if your model is too complex, or if you have too many variables, or - as we saw above - too many variants of specific variables. Keep the theory in mind - before adding to a model, ensure you have a good theoretic reason for doing so."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Exercise\n",
    "\n",
    "1. Using \"number of other stocks\" as the \"degree\", fit the AAPL price to a number of random stocks. Keep the \"random\" stocks consistent throughout the testing though! After how many stocks do we start overfitting?\n",
    "2. A similar experiment can be performed with \"number of data points\" on the x-axis and train/test error. Create this plot, varying the size of the dataset. This plot tells us whether collecting more data will assist or not with improving the error, which can be critical in determining if funds need to be spent in this area."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Linear Regression vs Ridge Regression\n",
    "\n",
    "One example of an algorithm that can reduce the problem of overfitting is Ridge Regression. It can be summarised as \"Linear Regression, but you are penalised for high $\\beta$ values\". Ridge Regression helps when your overfitting problem is caused by too many variables, (not so much for model complexity). There are several algorithms of this type, that penalise attributes that could cause overfitting.\n",
    "\n",
    "Given the normal $SSE$ value that Linear Regression models minimise, Ridge Regression instead aims to minimise:\n",
    "\n",
    "\\begin{align*}\n",
    "SSE_{Ridge} = SSE + \\lambda \\sum_{i = 1}^k \\beta_i^2\n",
    "\\end{align*}\n",
    "\n",
    "Where $\\lambda$ is a tunable parameter. Setting it high penalises larger coefficients, leading to \"flatter\" models being learned, which is very useful when there are variables that are just learning noise, as they are shrunk towards 0. If $\\lambda=0$, then the algorithm is exactly the same as a Linear Regression. Also, note that the intercept coefficient ($\\beta_0$) is not shrunk.\n",
    "\n",
    "As an interesting, if perhaps not useful sidenote, Ridge Regression can also fit with as little as one data point. Linear Regression cannot, because there are infinite lines going through a single point, and any of them minimise $SSE$. However, only one minimises $SSE_R$ (when $\\lambda > 0$).\n",
    "\n",
    "#### Lasso Regression\n",
    "\n",
    "Like Ridge Regression, Lasso Regression penalises large coefficients, but via a slightly different formula.\n",
    "\n",
    "\\begin{align*}\n",
    "SSE_{Lasso} = SSE + \\lambda \\sum_{i = 1}^k \\lvert \\beta_i \\rvert\n",
    "\\end{align*}\n",
    "\n",
    "The change from penalising by the square to penalising by the absolute value of the coefficients seems relatively small, but this adjustment means that sometimes coefficients will be set to zero, rather than just being shrunk towards it. As such this type of model automatically performs feature selection, removing variables that do not correlate strongly from the model entirely which can assist with model interpretation.\n",
    "\n",
    "This advantage over Ridge Regression can also be a weakness; as we've seen in previous notebooks automatically removing variables without thought as to why can result in the loss of predictive power from the model. Similarly, like how linear regression coefficients can become unstable in the presence of multicollinear variables, so too do Lasso Regression coefficients, but in Lasso Regression the result is sometimes entire removal of one of the offending features.\n",
    "\n",
    "#### Parameter Selection\n",
    "\n",
    "There is no one optimal $\\lambda$ as the magnitude of its effect is highly dependent on the data it is being trained on. In particular, if $SSE$ is larger, then the effect of lambda will be relatively small.\n",
    "\n",
    "Generally, you would fit $\\lambda$ to your data using cross-fold validation to choose the best value. This is the case for both Lasso and Ridge regression.\n",
    "\n",
    "Classes for performing these kinds of regression (and classes that assist with parameter selection) can be found in the scikit-learn library."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Exercise\n",
    "\n",
    "1. Fit Linear Regression and Ridge Regression to a small dataset, with a positive, non-zero $\\lambda$ value and compare the lines of best fit.\n",
    "2. Investigate Grid Search in scikit-learn, and use it to fit the best value of $\\lambda$."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "*For solutions, see `solutions/overfitting_three.py`*"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.11.8"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
